<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>单例模式</title>
</head>
<body>
  <script>
  // 类是用来实例化的
  // 只能实例化一次?? 
  // 80 年代 独生 
  function Singleton(name) {
    this.name = name;
    // null 没有实例化
    // 实例化一次后 
    this.instance = null; 
  }
  // 原型对象
  Singleton.prototype.say = function() {
    console.log('说点什么');
  }
  // Person 对象来使用 静态方法
  Singleton.getInstance = function(name) {
    // console.log('返回单例对象 独苗 ')
    // 如何返回一个实例， 
    // 如果生过了之后， 返回之前的那一个， 
    // 缓存 实例
    if (!this.instance) {
      this.instance = new Person(name)
    }
    return this.instance;
  }
  // 如果只能实例化一次的话？ new 
  // 得想想
  // let xbf = new Person('谢包发');
  // xbf.say(); // 实例上的方法 __proto__ 
  // 没有new了, 
  let xbf = Singleton.getInstance('谢包发');
  let ltt = Singleton.getInstance('刘天瞳');
  console.log(xbf.name, ltt.name)
  // let ltt = new Person('刘天瞳');
  // console.log(xbf instanceof Person);
  // console.log(xbf.__proto__.constructor == Person)

  </script>
</body>
</html>
